package com.java.keyword;

/**
 * @author Lenl
 * @create 2021-05-30 13:22
 *
 * static关键字的使用
 * 1.static 静态的
 * 2.用来修饰属性、方法、代码块、内部类
 * 3.static修饰属性:静态变量、类变量
 *  3.1属性按是否使用static修饰分为静态属性 和 非静态属性(实例变量)
 *      实例变量：类的多个对象独立拥有一套类中的非静态属性
 *      静态变量：类的多个对象共享同一个静态变量
 *  3.2 static修饰属性的其他说明：
 *      ①静态变量随者类加载而加载，可通过 类.静态变量 调用
 *      ②静态变量的加载要早于对象的创建
 *      ③类只加载一次，则静态变量也只存在一份：存在方法区的静态域中。
 *      ④静态变量用类和对象都能调用，而实例变量只能用对象调用
 *  3.3静态属性举例：System.out、Math.PI
 *  4.使用static修饰方法
 *      ①随者类加载而加载，类.静态方法调用
 *      ②同 3.2 ④
 *      ③静态方法中只能使用静态方法和属性
 *  5.static注意点
 *      ①static方法中不能使用this和super关键字
 *      ②静态属性和静态方法的使用可以从生命周期中考虑
 *  6.在开发中，如何确定一个属性、方法是否要声明为static的
 *      >属性是可以被多个对象所共享的，不会随者对象的不同而不同
 *      >操作静态属性的方法通常为static的
 *      >工具类中的方法习惯上声明为static的，如Math,Arrays,Collections等
 *
 *  
 */
public class staticLearn {
    public static void main(String[] args) {
        Chinese c1=new Chinese();
        c1.name="姚明";
        c1.age=40;

        Chinese c2=new Chinese();
        c2.name="马龙";
        c2.age=30;

        c1.nation="CN";

        System.out.println(c2.nation);
        Chinese.eat();
        c1.eat();

    }
}

class Chinese{
    String name;
    int age;
    static String nation;

    public  static void eat(){
        System.out.println("中国人用筷子吃饭");
    }
}
